package com.weixing.mall.provider.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.weixing.mall.provider.api.model.vo.SysConfigVo;
import com.weixing.mall.provider.mapper.ConfigMapper;
import com.weixing.mall.provider.model.domain.Config;
import com.weixing.mall.provider.model.dto.sys.SysConfigDto;
import com.weixing.mall.provider.model.query.SysCfgQuery;
import com.weixing.mall.provider.service.IConfigService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.Date;

/**
 * <p>
 * 系统设置 服务实现类
 * </p>
 *
 * @author Small
 * @since 2019-11-18
 */
@Service
public class ConfigServiceImpl extends ServiceImpl<ConfigMapper, Config> implements IConfigService {

    @Override
    public IPage<SysConfigVo> selectOfPage(Page initMpPage, SysCfgQuery cfgQuery) {
        return baseMapper.selectOfPage(initMpPage,cfgQuery);
    }

    @Override
    public Config selectByCfgCode(String cfgCode) {
        return getOne(new QueryWrapper<Config>().eq("cfg_code",cfgCode));
    }

    @Override
    public void save(SysConfigDto sysConfigDto) {
        Config sysConfig = new Config();
        BeanUtils.copyProperties(sysConfigDto,sysConfig);
        sysConfig.setCfgType(sysConfigDto.getCfgType().getValue());
        if (null != sysConfigDto.getUnit()){
            sysConfig.setUnit(sysConfigDto.getUnit().getValue());
        }

        if(null==sysConfigDto.getId()){
            baseMapper.insert(sysConfig);
        }else{
            sysConfig.setUpdatedTime(new Date());
            baseMapper.updateById(sysConfig);
        }
    }

    @Override
    public void changeEnable(Long id, Integer value) {
        baseMapper.changeEnable(id,value);
    }

    @Override
    public Integer selectCfgTypeByName(String name) {
        return baseMapper.selectCfgTypeByName(name);
    }

    @Override
    public SysConfigVo selectVoByCfgCode(String cfgCode) {
        return baseMapper.selectVoByCfgCode(cfgCode);
    }
}
